import pandas as pd
import numpy as np

# 创建Series示例
print("=== Series 示例 ===")
# 从列表创建Series
s1 = pd.Series([1, 3, 5, np.nan, 6, 8])
print("从列表创建的Series:")
print(s1)

# 从字典创建Series
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3})
print("\n从字典创建的Series:")
print(s2)

# 创建DataFrame示例
print("\n=== DataFrame 示例 ===")
# 从字典创建DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': pd.Timestamp('20230101'),
    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
    'D': np.array([3] * 4, dtype='int32'),
    'E': pd.Categorical(['test', 'train', 'test', 'train']),
    'F': 'foo'
})
print("从字典创建的DataFrame:")
print(df1)
print("\nDataFrame信息:")
print(df1.dtypes)

# 从CSV创建DataFrame (示例数据)
print("\n=== 数据操作示例 ===")
# 创建示例数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 30, 35, 28, 22],
    'City': ['New York', 'London', 'Paris', 'Tokyo', 'Berlin'],
    'Salary': [50000, 60000, 70000, 55000, 45000]
}
df2 = pd.DataFrame(data)
print("员工数据:")
print(df2)

# 选择数据
print("\n选择列'Name'和'Age':")
print(df2[['Name', 'Age']])

print("\n选择前3行:")
print(df2.head(3))

print("\n选择年龄大于25的员工:")
print(df2[df2['Age'] > 25])

# 数据统计
print("\n=== 数据统计示例 ===")
print("年龄统计信息:")
print(df2['Age'].describe())

print("\n按城市分组的平均薪资:")
print(df2.groupby('City')['Salary'].mean())

# 数据处理
print("\n=== 数据处理示例 ===")
# 添加新列
df2['Bonus'] = df2['Salary'] * 0.1
print("添加奖金列后:")
print(df2)

# 排序
print("\n按年龄排序:")
print(df2.sort_values('Age'))

# 处理缺失数据示例
print("\n=== 缺失数据处理示例 ===")
# 创建包含缺失值的数据
df3 = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
})
print("包含缺失值的DataFrame:")
print(df3)

print("\n删除包含缺失值的行:")
print(df3.dropna())

print("\n填充缺失值:")
print(df3.fillna(0))

# 数据合并示例
print("\n=== 数据合并示例 ===")
df4 = pd.DataFrame({
    'key': ['A', 'B', 'C', 'D'],
    'value1': [1, 2, 3, 4]
})

df5 = pd.DataFrame({
    'key': ['B', 'C', 'D', 'E'],
    'value2': [5, 6, 7, 8]
})

print("第一个DataFrame:")
print(df4)
print("\n第二个DataFrame:")
print(df5)

print("\n内连接结果:")
print(pd.merge(df4, df5, on='key', how='inner'))

print("\n外连接结果:")
print(pd.merge(df4, df5, on='key', how='outer'))

# 数据导入/导出示例 (注释掉实际执行部分)
print("\n=== 数据导入/导出示例 ===")
print("# 从CSV文件读取数据:")
print("# df = pd.read_csv('data.csv')")
print("\n# 将DataFrame保存为CSV文件:")
print("# df.to_csv('output.csv', index=False)")
print("\n# 从Excel文件读取数据:")
print("# df = pd.read_excel('data.xlsx', sheet_name='Sheet1')")
print("\n# 将DataFrame保存为Excel文件:")
print("# df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)")

print("\n=== 时间序列示例 ===")
# 创建时间序列数据
dates = pd.date_range('20230101', periods=6)
df6 = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print("时间序列数据:")
print(df6)

print("\n按日期筛选数据:")
print(df6['2023-01-02':'2023-01-04'])